/*
 *   Clovis
 *   Copyright (C) 2008 SFWOL
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

/*****************************
 *							 *
 * ~~ DE CHELONIAN MOBILE ~~ *
 *							 *
 *****************************/

#ifndef __CLOVIS_H
#define __CLOVIS_H

// INCLUDING LUA AND CLOVIS's LUA CLASSES

/*
extern "C" {

    #include "lib/lua/lua.h"
    #include "lib/lua/lualib.h"
    #include "lib/lua/lauxlib.h"

    #include "lua/Functions.h"

}

#include "lib/lunar/lunar.h"
#include "lua/LuaState.h"
*/

// INCLUDING CORE CLASSES

#include "core/Converter.h"
#include "core/CInteger.h"
#include "core/CFloat.h"
#include "core/CString.h"
#include "core/ClovisVariable.h"
#include "core/Point.h"
#include "core/Point3D.h"
#include "core/Math.h"
#include "core/Rect.h"
#include "core/Tree.h"
#include "core/Node.h"
#include "core/XMLNode.h"

// INCLUDING DATAS CLASSES

#include "datas/XMLFileReader.h"
#include "datas/INIFileReader.h"

// INCLUDING IO CLASSES

#include "io/Mouse.h"
#include "io/Keyboard.h"
#include "io/Joystick.h"
#include "io/FileSystemAccess.h"
#include "io/Log.h"
#include "io/InputDevice.h"

// INCLUDING VIDEO CLASSES

#include "video/VideoDevice.h"
#include "video/Color.h"


#include <iostream>

/*!
 * \~english
 * \mainpage
 *
 * \section presentation Presentation
 *
 * Clovis is a free open source toolkit for 2D games developement under Win32, GNU/Linux and MAC OS X operating systems.
 *
 * \section authors Authors
 *
 * \~french
 * \mainpage
 *
 * \section presentation Présentation
 *
 * Clovis est un toolkit pour le dévelopement de jeux 2D pour les systèmes Win32, GNU/Linux et MAC OS X.
 *
 * \section authors Auteurs
 *
 * \~
 * MARTIN Damien <damien@sfwol.org><br/>
 * THERY-HERMAIN Romain <romain@sfwol.org>
 *
 * \section licenses Licenses
 * All the source code is under the GNU/GPL license : http://www.gnu.org/licenses/gpl.html.<br/>
 * This documentation is under the GNU/FDL license : http://www.gnu.org/copyleft/fdl.html.
 */

 /*!
  * \brief The root namespace of Clovis
  */
 namespace clovis {

	class ClovisEngine {

		private:

			video::VideoDevice * video_device;
			//audio::AudioDevice audio_device;

			core::Tree * clovis_variables;
			core::Tree * user_variables;

			core::CString version;
			core::CString authors;
			core::CString license;
			core::CString web;

		public:

			ClovisEngine();

			void createSystemWindow();

			core::Tree * getClovisVariables();
			core::Tree * getUserVariables();

/*			ClovisEngine(CString configuration_file);
*/
	};


	/*! \brief The core module where you can find all the basis of Clovis */
	namespace core {}

	/*! \brief It is where you can find all the datas management */
	namespace datas {}

	/*! \brief It is where you can find all the i/o management */
	namespace io {}

	/*! \brief It is where you can find all the network management */
	namespace net {}

	/*! \brief It is where you can find all the audio management */
	namespace audio {}

	/*! \brief It is where you can find all the lua management */
	namespace lua {}

	/*! \brief It is where you can find all the physics management */
	namespace physics {}

	/*! \brief It is where you can find all the video management */
	namespace video {

		/*! \brief It is where you can find all the gui management */
		namespace gui {}

	}

 }

#endif
